home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / ImageItem.C < prev    next >
C/C++ Source or Header  |  1990-12-04  |  2KB  |  84 lines

  1. //$ImageItem$
  2.  
  3. #include "ImageItem.h"
  4.  
  5. //---- ImageItem ---------------------------------------------------------------
  6.  
  7. MetaImpl(ImageItem, (T(base), TP(bmp), TB(deleteBitmap), 0));
  8.  
  9. ImageItem::ImageItem(Bitmap *b, int bs)
  10. {
  11.     deleteBitmap= FALSE;
  12.     base= bs;
  13.     bmp= b;
  14.     SetFlag(eVObjHFixed | eVObjVFixed);
  15. }
  16.  
  17. ImageItem::ImageItem(int id, Bitmap *b, int bs) : VObject(id)
  18. {
  19.     deleteBitmap= FALSE;
  20.     base= bs;
  21.     bmp= b;
  22.     SetFlag(eVObjHFixed | eVObjVFixed);
  23. }
  24.  
  25. ImageItem::ImageItem(short *s, Point e, int bs)
  26. {
  27.     deleteBitmap= TRUE;
  28.     base= bs;
  29.     bmp= new Bitmap(e, (u_short*)s);
  30.     SetFlag(eVObjHFixed | eVObjVFixed);
  31. }
  32.  
  33. ImageItem::~ImageItem()
  34. {
  35.     if (deleteBitmap)
  36.     SafeDelete(bmp);
  37. }
  38.  
  39. void ImageItem::SetBitmap(Bitmap *bm, bool redraw)
  40. {
  41.     if (deleteBitmap && bmp)
  42.     delete bmp;
  43.     deleteBitmap= FALSE;
  44.     bmp= bm;
  45.     SetContentRect(Rectangle(GetOrigin(), GetMinSize().extent), redraw);
  46. }
  47.  
  48. Metric ImageItem::GetMinSize()
  49. {
  50.     return Metric(bmp->Size(), bmp->Size().y);
  51. }
  52.  
  53. int ImageItem::Base()
  54. {
  55.     return base ? base : bmp->Size().y;
  56. }
  57.  
  58. void ImageItem::Draw(Rectangle)
  59. {
  60.     GrPaintBitMap(contentRect, bmp, Enabled() ? ePatBlack : ePatGrey50);
  61. }
  62.  
  63. void ImageItem::DoObserve(int, int part, void*, Object *op)
  64. {
  65.     if (op == bmp && part != cPartSenderDied)
  66.     ForceRedraw();
  67. }
  68.  
  69. ostream& ImageItem::PrintOn (ostream &s)
  70. {
  71.     VObject::PrintOn(s);
  72.     return s << bmp SP << base SP;
  73. }
  74.  
  75. istream& ImageItem::ReadFrom(istream &s)
  76. {
  77.     if (deleteBitmap)
  78.     SafeDelete(bmp);
  79.     deleteBitmap= TRUE;
  80.     VObject::ReadFrom(s);
  81.     return s >> bmp >> base;
  82. }
  83.  
  84.